1. Technical Field
The present embodiments relate to techniques for safely executing native code modules. More specifically, the present embodiments relate to methods and systems for safely executing native code modules within ARM 64-bit instruction set architectures. (ARM is a registered trademark of ARM Limited of Cambridge, England.)
2. Related Art
Easy access to computers and plentiful network bandwidth have facilitated sharing of information and applications. For instance, a user of a computing device, e.g., a personal computer, a mobile phone, or a personal digital assistant, may easily install and execute an application downloaded from a web site or received from a friend as an email attachment. Similarly, a user of shared cloud computers may upload and run an application that is unknown to the operator of the cloud. This entails risk to the operator and, if the application has access to resources shared with other users, to the other users. Installing and executing such applications on a given computing device typically involves a level of trust that is granted on an all-or-nothing basis by the operating system of the computing device. Furthermore, bugs in the operating system may inadvertently allow applications to access resources As a result, some applications, e.g., native applications, may have full access to the operating system and/or resources of the computing device, while other applications, e.g., web applications, may have little to no direct access to the operating system and/or resources of the computing device.
Such coarse application of trust may negatively impact the execution of all applications on the computing device. For example, native applications may produce unwanted side effects by modifying files on the computing device and/or engaging in computation or communication outside of the tasks or features requested by the user. On the other hand, web applications may execute one to two orders of magnitude slower than native applications and may provide limited functionality to the user.